1. Field of the Invention
The present invention generally relates to query processing. More specifically, this application relates techniques for creating an abstract query from a physical query of a database.
2. Description of the Related Art
Databases are well known systems for information storage and retrieval. The most prevalent type of database used today is the relational database that stores data in a set of tables that may be reorganized and accessed in a number of different ways. A relational database management system (DBMS) uses relational techniques for storing and retrieving data.
Structured Query Language (SQL) is a well known database language that that includes commands for retrieving, storing, updating, and deleting data stored in a relational database. An SQL query is constructed as a text string that must strictly conform to the grammar requirements of the SQL query language. Further, an SQL query must be semantically correct to perform as desired by the user. That is, many syntactically correct SQL statements may fail to perform as desired due to semantic errors. Because of this complexity, database query applications are often used to assist a user in composing an SQL query of a relational database.
For example, one technique for managing the complexity of a relational database and the SQL query language is to use database abstraction techniques. Commonly assigned U.S. patent application Ser. No. 10/083,075 (the '075 application) entitled “Application Portability and Extensibility through Database Schema and Query Abstraction”, discloses a framework that provides an abstract view of a physical data storage mechanism. The framework of the '075 application provides a requesting entity (i.e., an end-user or front-end application) with an abstract representation of data stored in an underlying physical storage mechanism, such as a relational database.
Using the database abstraction model, logical fields are defined that describe data stored in an underlying database. Users compose abstract queries by selecting logical fields and specifying conditions. In one embodiment of a database abstraction model, each logical field specifies an access method that specifies how to retrieve data from an underlying database system corresponding to the logical field. The system then retrieves data from the underlying database by generating a resolved query from the abstract query.
Abstract database technology offers functionality impossible in current relational databases. Moreover, abstract databases allow users to keep data in the existing database in its current format while allowing users to create more interesting queries with less effort. Many entities have, however, made substantial investments in creating queries to run against their relational databases. Oftentimes carefully crafted queries are saved, stored, shared and reused. Further existing queries may be hard coded as part of query applications, forms, and the like.
Accordingly, there exists a need for techniques to transform a query written in the query language for an underlying physical database, SQL in many cases, into an abstract query that can be executed against the abstract database. Doing so captures the effort of creating the physical query while allowing access to the more feature rich abstract database environment, and lowers entry barriers to deploying an abstract database.